]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
shellEntry: Restore natural-height-set instead of forcing it
authorFlorian Müllner <fmuellner@gnome.org>
Fri, 21 Feb 2020 18:38:53 +0000 (19:38 +0100)
committerverdre <jonas@dressler.it>
Sat, 22 Feb 2020 16:58:01 +0000 (16:58 +0000)
If we are transitioning the label from 0 to its natural height, we
must set natural-height-set again after querying the preferred height,
otherwise Clutter would skip the transition.

However when transitioning in the opposite direction, setting the
property to true can go horribly wrong:
If the actor hasn't been allocated before, it will store a fixed
natural height of 0. But as there is no fixed min-height, we can
end up with min-height > natural-height, which is a fatal error.

(This isn't an issue when *actually* setting a fixed height, as
that will set both natural and minimum height)

So instead of always setting natural-height-set to true, restore
its previous value to fix the issue.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2255

js/ui/shellEntry.js

index c1a1f1134a8ba738ddbc56cf8f6ee9c7ffe13cb6..38f5a836d2837aeaf24002d9f9eee0dfe6803f0c 100644 (file)
@@ -191,9 +191,10 @@ class CapsLockWarning extends St.Label {
 
         this.remove_all_transitions();
 
+        const { naturalHeightSet } = this;
         this.natural_height_set = false;
         let [, height] = this.get_preferred_height(-1);
-        this.natural_height_set = true;
+        this.natural_height_set = naturalHeightSet;
 
         this.ease({
             height: capsLockOn ? height : 0,